home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 11255 / 11255.xpi / chrome / content / controller / buttons / NoteController.js < prev    next >
Text File  |  2009-11-25  |  4KB  |  124 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * 
  3.  * Pearltrees add-on AMO, Copyright(C), 2009, Broceliand SAS, Paris, France 
  4.  * (company in charge of developing Pearltrees)
  5.  * 
  6.  * This file is part of ΓÇ£Pearltrees add-on AMOΓÇ¥.  
  7.  * 
  8.  * Pearltrees add-on AMO is free software: you can redistribute it and/or modify it under the 
  9.  * terms of the GNU General Public License version 3 as published by the Free Software Foundation.
  10.  * 
  11.  * Pearltrees add-on AMO is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
  12.  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
  13.  * See the GNU General Public License for more details.
  14.  * 
  15.  * You should have received a copy of the GNU General Public License along with Pearltrees add-on AMO. 
  16.  * If not, see <http://www.gnu.org/licenses/>
  17.  * 
  18.  * ***** END LICENSE BLOCK ***** */
  19.  
  20. // ///////////////////////////////////////////////////////////////////////////////
  21. // Note Controller
  22. // ///////////////////////////////////////////////////////////////////////////////
  23.  
  24. var BRO_noteController = {
  25.  
  26.     numCommentsOnCurrentUrl : 0,
  27.     defaultText : "", 
  28.  
  29.     init : function() {
  30.         this.numCommentsOnCurrentUrl = 0; 
  31.     },
  32.     
  33.     onClickCancelNote:function() {        
  34.         this.cancelNote();
  35.     },
  36.  
  37.     onClickValidateNote:function() {        
  38.         var noteText = document.getElementById('BRO_notePanelContent').text;
  39.         if(!noteText || BRO_tools.trim(noteText) == "") {
  40.             return;
  41.         }
  42.         
  43.         this.closePopup();
  44.         this.saveNoteAndRecordIfNotRecorded(noteText);
  45.     },
  46.     
  47.     onPanelShowing:function() {
  48.         // Use small timeout whereas XBL setters don't work...
  49.         // Don't know why yet :(
  50.         BRO_tools.callWithDelay('BRO_noteController.initPanel()', 20);
  51.     },
  52.     
  53.     initPanel:function() {
  54.         var panelContent = document.getElementById('BRO_notePanelContent');
  55.         panelContent.focus();
  56.         var defaultText = this.getDefaultText();
  57.         if(panelContent.text != defaultText) {
  58.             panelContent.text = "";        
  59.             panelContent.defaultText = defaultText;
  60.         }
  61.     },
  62.     
  63.     getDefaultText:function () {
  64.         if (this.numCommentsOnCurrentUrl == 0) {
  65.             this.defaultText = BRO_locale.getString('comment.textbox.defaultValue');
  66.         } else { 
  67.             this.defaultText = BRO_locale.getString('comment.textbox.addValue');
  68.         }
  69.         return this.defaultText;
  70.     },
  71.     
  72.     closePopup:function() {
  73.         var notePanel = document.getElementById('BRO_notePanel');
  74.         if (notePanel) {
  75.             notePanel.hidePopup();
  76.         }        
  77.     },
  78.  
  79.     cancelNote:function() {
  80.         this.closePopup();
  81.     },
  82.     
  83.     saveNoteAndRecordIfNotRecorded:function(noteText) {
  84.         if(!noteText || BRO_tools.trim(noteText) == "") {
  85.             return;
  86.         }        
  87.         if(BRO_toolbar.isCurrentUrlRecorded()) {
  88.             BRO_noteController.saveNote(noteText);
  89.             if (BRO_toolbar.recordingMode == RECORING_MODE_ONE_BY_ONE) {
  90.                 BRO_buttonEffectHelper.runIsRecordingEffect();
  91.                 BRO_tools.callWithDelay('BRO_buttonEffectHelper.stopIsRecordingEffect()', BRO_buttonEffectHelper.START_RECORDING_EFFECT_TIME);
  92.             } 
  93.         } 
  94.         else if(!BRO_navListener.urlLoading && BRO_model.isValidUrl(BRO_browserManager.getSelectedBrowserUrl())) {            
  95.             var url = BRO_browserManager.getSelectedBrowserUrl();
  96.             if (BRO_toolbar.recordingMode == RECORING_MODE_ONE_BY_ONE && BRO_model.isValidUrl(url)) {
  97.                 BRO_toolbar.setRecording(true);
  98.                 BRO_ButtonsHandler.recordCurrentPage();
  99.                 BRO_tools.callWithDelay('BRO_toolbar.setRecording(false)', BRO_buttonEffectHelper.START_RECORDING_EFFECT_TIME);
  100.             } else if (BRO_toolbar.recordingMode == RECORING_MODE_CONTINUOUS) {
  101.                 BRO_toolbar.setRecording(true);
  102.                 BRO_ButtonsHandler.recordCurrentPage();
  103.             } 
  104.             BRO_tools.callWithDelay("BRO_noteController.saveNote('"+noteText+"')",200);
  105.         }    
  106.     },
  107.  
  108.     saveNote : function(noteText) {    
  109.         if (BRO_toolbar.recordingMode == RECORING_MODE_CONTINUOUS && !BRO_toolbar.isRecording) {
  110.             return;
  111.         }
  112.         var url = BRO_browserManager.getSelectedBrowserUrl();
  113.         var browserID = BRO_browserManager.getSelectedBrowserID();
  114.         var time = BRO_tools.getTime();
  115.         var comment = null;
  116.         if (noteText) {
  117.             comment = BRO_tools.trim(noteText);
  118.         }        
  119.         if (BRO_model.isValidUrl(url) && comment != '' && comment != this.getDefaultText()) {
  120.             this.numCommentsOnCurrentUrl++;            
  121.             BRO_model.addComment(url, browserID, time, comment);
  122.         }
  123.     }
  124. }